package com.hao.flowsvr.mapper;

import com.hao.flowsvr.model.entity.AsyncFlowTask;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface AsyncFlowTaskMapper {
    /**
     * 创建任务
     *
     * @param asyncFlowTask
     * @param tableName
     */
    void create(@Param ("tableName") String tableName, @Param("asyncFlowTask") AsyncFlowTask asyncFlowTask);

    /**
     * 根据任务查找任务
     *
     * @param task_id
     * @param tableName
     * @return
     */
    AsyncFlowTask find(@Param("task_id") String task_id, @Param("tableName") String tableName);

    /**
     * 获得对应状态的对应任务列表
     *
     * @param taskType  任务类型
     * @param status    任务状态
     * @param limit     限制数目
     * @param tableName
     * @return
     */
    List<AsyncFlowTask> getTaskList(@Param("taskType") String taskType, @Param("status") int status,
                                    @Param("limit") int limit, @Param("tableName") String tableName);

    /**
     * 将列表中的任务修改为指定状态
     *
     * @param ids
     * @param status
     * @param tableName
     * @return
     */
    int updateStatusBatch(@Param("ids") List<String> ids, @Param("status") int status,
                          @Param("modifyTime") long modifyTime, @Param("tableName") String tableName);

    /**
     * 更新任务信息
     *
     * @param asyncFlowTask
     * @param statuss
     * @param tableName
     */
    void updateTask(@Param("asyncFlowTask") AsyncFlowTask asyncFlowTask,
                    @Param("statuss") List<Integer> statuss, @Param("tableName") String tableName);

    /**
     * 查看指定用户的任务
     *
     * @param user_id
     * @param statusList
     * @param tableName
     * @return
     */
    List<AsyncFlowTask> getTaskByUser_idAndStatus(@Param("user_id") String user_id, @Param("statusList") List<Integer> statusList,
                                                  @Param("tableName") String tableName);

}
